import $store from '@/store/index.js';
export default {
	common: {
		// #ifndef H5
		baseUrl: '',
		// baseUrl: 'https://111.62.41.183:18443/',
		// #endif
		// #ifdef H5
		// 需要在manifest.json文件中配置h5代理
		baseUrl: '/api',
		// #endif
		header: {
			'Content-Type': 'application/json;charset=UTF-8'
		},
		data: {},
		method: 'GET',
		dataType: 'json',
		token: true,
		sslVerify: false
	},
	request(options = {}) {
		options.url = this.common.baseUrl + options.url
		options.header = options.header || this.common.header
		options.data = options.data || this.common.data
		options.method = options.method || this.common.method
		options.dataType = options.dataType || this.common.dataType
		options.token = options.token === false ? false : this.common.token
		options.sslVerify = false
		return new Promise((res, rej) => {
			// 请求之前验证token
			// if (options.token) {
			// 	let token = $store.state.user.token
			// 	// 往header头中添加token
			// 	options.header.ticket = token
			// }
			// if (options.token) {
			// 	let token = uni.getStorageSync('ticket')
			// 	// 二次验证
			// 	if (!token) {
			// 		uni.showToast({
			// 			title: "请先登录",
			// 			icon: 'error',
			// 			position: 'center',
			// 			duration: 1500
			// 		})
			// 		// token不存在时跳转
			// 		setTimeout(function() {
			// 			uni.redirectTo({
			// 				url: '/pages/login/index',
			// 			});
			// 		}, 1500)
			// 		return rej("need login")
			// 	}
			// 	// 往header头中添加token
			// 	options.header.token = token
			// }
			uni.request({
				...options,
				success: (result) => {
					if (result.statusCode != 200) {
						// token不合法，直接退出登录
						if (result.data.data === 'Token 令牌不合法!') {
							$store.dispatch('user/logout');
						}
						return false
					}
					// 服务端失败
					if (result.data.needLogin) {
						uni.showToast({
							title: result.data.data || '登陆失效',
							icon: 'error',
							position: 'center',
							duration: 1500
						})
						setTimeout(function() {
							$store.dispatch('user/logout');
							return false
						}, 1500)
					}
					// 其他验证...
					// 成功
					let data = result.data
					res(data)
				},
				fail: (error) => {
					uni.showToast({
						title: error.errMsg || '请求失败',
						icon: 'error',
						position: 'center'
					})
					return rej(error)
				}
			})
		})
	},
	get(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'GET'
		return this.request(options)
	},
	post(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'POST'
		return this.request(options)
	},
	put(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'PUT'
		return this.request(options)
	},
	del(url, data = {}, options = {}) {
		options.url = url
		options.data = data
		options.method = 'DEL'
		return this.request(options)
	}
}
